# 迭代器
my_str = "abcde"
my_tup = ("h","e","l","l","o")
my_list = [1,2,3,4]
my_set = {"A","B","C","D"}
my_dict = {"a":1,"b":2,"c":3}

# 创建迭代器对象
str_iter = iter(my_str)
tup_iter = iter(my_tup)
list_iter = iter(my_list)
set_iter = iter(my_set)
# 字典迭代器只是对key的迭代
dict_iter = iter(my_dict)

# 输出迭代器的下一个元素
print(next(str_iter))
print(next(tup_iter))
print(next(list_iter))
# 集合的迭代器输出顺序和定义的顺序并不一致
print(next(set_iter))
print(next(dict_iter))

# 也可以通过for循环对迭代器进行遍历
for i in my_str:
    print(i)

# 迭代器：
#     1. 迭代器是一个可以记住遍历的位置的对象
#     2. 迭代器对象从集合的第一个元素开始访问，直到所有的元素被访问完结束
#     3. 迭代器只能往前不会后退
#     4. 迭代器有两个基本的方法：iter() 和 next()
#     5. iter()方法用于将一个容器（list, tuple, string）转换为迭代器
#     6. next()方法用于迭代器的的下一个元素
#     7. iter()方法返回一个迭代器对象，next()方法返回迭代器的下一个元素
#     8. 迭代器对象从集合的第一个元素开始访问，直到所有的

# 注意：这些容器之所以能够被迭代，本质就是调用其内部的__iter__()方法和 __next__() 方法

